Networks and the functionality that they deliver are growing increasingly complex, making network management a steadily growing challenge. There are many aspects to managing a network—from maintenance of its physical infrastructure to planning of its logical architecture. One component of network management is configuration management.
Router configurations capture and reflect all levels of network operation: from the logical structure of the (possibly many) networks, both real and virtual, of which they are a part, to the multi-faceted routing policies of those networks, to the physical links, interface cards and controllers that form the building blocks of the networks that they drive. It is highly challenging to manage the detailed configurations of the potentially huge number of routers that run a network. Yet, looking at a single router reveals little of the entire picture. As a result, router configurations are extremely brittle, where small changes to a single router configuration may have a significant impact on the network as a whole.
However, network operators do not have the luxury of leaving router configurations alone. As networks evolve, both in terms of the users they include and the features they support, router configurations change with them. The pace of network evolution is such that the set of router configurations in a network may change on a daily basis. Manually configuring and analyzing router configurations is highly challenging, and time-consuming for large networks. Network owners, particularly for large networks, devote tremendous resources to ensure that their networks are robust and flexible. For example, the resources may be used for updating software and training personnel. That is, the software must be written, and re-written (or purchased and repurchased, as the case may be), and operators must be trained and retrained to keep up with this constant evolution.